import java.util.HashMap;
import java.util.HashSet;
import java.util.Scanner;

public class MinRange {
    public static boolean mapInclude(HashSet<Integer> t, HashMap<Integer, Integer> map) {
        for(Integer val: t) {
            if(map.getOrDefault(val, 0) == 0){
                return false;
            }
        }
        return true;
    }
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNextInt()) {
            int N = scanner.nextInt();
            int[] nums = new int[N];
            for(int i=0;i<N;i++) {
                nums[i] = scanner.nextInt();
            }
            int M = scanner.nextInt();
            int[] target = new int[M];
            HashSet<Integer> t = new HashSet<>();
            for(int i=0;i<M;i++) {
                target[i] = scanner.nextInt();
            }
            for(int i=0;i<M;i++) {
                //hashmap实现计数方法
                t.add(target[i]);
            }
            int l=0, r=0;
            int ans = 100000, currLen;
            HashMap<Integer, Integer> map = new HashMap<>();
            map.put(nums[0], 1);
            while (true) {
                if(mapInclude(t, map)){
                    currLen = r-l+1;
                    ans = Math.min(ans, currLen);
                    map.put(nums[l],map.get(nums[l])-1);
                    if(map.get(nums[l]) == 0){
                        map.remove(nums[l]);
                    }
                    l++;
                }else{
                    r++;
                    if(r<N)  map.put(nums[r], map.getOrDefault(nums[r], 0)+1);
                    else break;
                }
            }
            System.out.println(ans);
        }
        scanner.close();
    }
}


//import java.util.HashMap;
//import java.util.Scanner;
//import java.util.Set;
//import java.util.HashSet;
//
//public class MinRange {
//    // 检查当前窗口是否包含所有目标整数
//    public static boolean containsAll(Set<Integer> nums2Set, HashMap<Integer, Integer> window) {
//        for (int num : nums2Set) {
//            if (window.getOrDefault(num, 0) == 0) {
//                return false;
//            }
//        }
//        return true;
//    }
//
//    public static void main(String[] args) {
//        Scanner scanner = new Scanner(System.in);
//
//        // 读取N和N个整数
//        int N = scanner.nextInt();
//        int[] nums1 = new int[N];
//        for (int i = 0; i < N; i++) {
//            nums1[i] = scanner.nextInt();
//        }
//
//        // 读取M和M个整数
//        int M = scanner.nextInt();
//        int[] nums2 = new int[M];
//        Set<Integer> nums2Set = new HashSet<>();
//        for (int i = 0; i < M; i++) {
//            nums2[i] = scanner.nextInt();
//            nums2Set.add(nums2[i]);
//        }
//
//        HashMap<Integer, Integer> window = new HashMap<>();
//        int l = 0, res = Integer.MAX_VALUE;
//
//        // 滑动窗口的右边界
//        for (int r = 0; r < N; r++) {
//            window.put(nums1[r], window.getOrDefault(nums1[r], 0) + 1);
//
//            // 尝试缩小窗口
//            while (l <= r && containsAll(nums2Set, window)) {
//                res = Math.min(res, r - l + 1);
//                window.put(nums1[l], window.get(nums1[l]) - 1);
//                l++;
//            }
//        }
//
//        // 如果未找到则输出提示信息
//        System.out.println((res == Integer.MAX_VALUE) ? "Not found" : res);
//
//        scanner.close();
//    }
//}
